有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何为项目数组创建ParseQuery?

我有一个游戏类,它包含一个parseuser数组,其中的键为“players”:

@ParseClassName(Game.GAME)
public class Game extends ParseObject {
  public static final String PLAYERS = "players";

  public void addPlayer(ParseUser player) {
    addUnique(PLAYERS, player);
  }

  public List<ParseUser> getPlayers() {
    return getList(PLAYERS);
  }
}

玩家的姓名字段填充如下:

ParseUser.getCurrentUser().put("name", name);

我想得到这些玩家的名字并填充一个列表视图。我正试图找出如何使用ParseQueryAdapter来实现这一点,但我无法找到任何方法,既可以让您执行ParseQuery来选择在游戏中的数组中找到的ParseUsers,也无法找到将ParseQuery转换为基于该数组的ParseUsers查询的方法。这是我的最佳选择,但我不知道如何仅选择此查询的子项:

ListView playerListView = (ListView) findViewById(R.id.player_list);
ParseQueryAdapter<ParseUser> adapter = new ParseQueryAdapter<ParseUser>(this,
    new ParseQueryAdapter.QueryFactory<ParseUser>() {
  public ParseQuery create() {
    ParseQuery query = game.getQuery();
    query.include(Game.PLAYERS);
    return query;
  }
});
adapter.setTextKey("name");
playerListView.setAdapter(adapter);

编辑:对我来说,保持阵法中玩家的顺序也很重要


共 (1) 个答案

  1. # 1 楼答案

    我会做更像这样的事情。您需要通过将玩家对象设置为大厅或房间的某个键值来查询玩家对象,以填充列表。这并不完全是您应该如何做的,但是查询的工作方式类似。我希望这有帮助。至于加载到列表属性,我不确定这是否能完成任务:/

    ParseQueryAdapter<Post> mainAdapter;
    ParseQueryAdapter.QueryFactory<Post> factory;
    factory = new ParseQueryAdapter.QueryFactory<Post>() {
                    @Override
                    public ParseQuery<Post> create() {
                        ParseQuery query = new ParseQuery("PlayerObject");
                        query.orderByDescending("CurrentLobby");
                        return query;
                    }
                };
    mainAdapter = new ParseQueryAdapter<Post>(this, factory) {
            @Override
            public View getItemView(final PlayerObject object, View v, ViewGroup parent) {
                if (v == null) {
                    v = View.inflate(getContext(), R.layout.player_item_on_list, null);
                }
                return v;
            }
        };
        mainAdapter.setPaginationEnabled(true);
        mainAdapter.setTextKey("title");
        mainAdapter.setImageKey("Image");
        mainAdapter.loadObjects();